EF Core Power Tools 介紹
TLDR
- EF Core Power Tools 提供圖形化介面執行反向工程,解決原生指令複雜與客製化困難的問題。
- 透過
efpt.config.json統一設定檔,確保團隊開發環境一致。 - 支援 .NET 8 的
DateOnly與TimeOnly型別對應,避免 SQLdate/time被誤轉為DateTime。 - 擴充套件版本與 EF Core 版本高度相依,維護跨版本專案時可能需安裝多個 Visual Studio 實例。
- 若需支援 PostgreSQL 與 SQLite,可安裝 EF Core Power Pack 擴充套件。
EF Core Power Tools 核心優勢
在 Entity Framework Core 中,官方預設僅支援 Code First 開發模式。若要實現 Database First 的效果,通常需透過反向工程(Reverse Engineering)產生程式碼。使用 EF Core Power Tools 可解決以下問題:
- 指令複雜度:原生指令操作繁瑣且容易因參數錯誤導致產出差異。該工具提供 GUI 介面,降低操作門檻。
- 客製化彈性:支援透過 T4 範本或 Handlebars 進行程式碼客製化。
- 設定一致性:所有反向工程設定皆儲存於
efpt.config.json,確保團隊成員使用相同的產生規則。
DateOnly 與 TimeOnly 對應
什麼情況下會遇到這個問題:當資料庫欄位為 date 或 time 型別,但 EF Core 預設將其對應至 DateTime 時。
在 EF Core 8 中,該工具於進階設定提供「Map DateOnly and TimeOnly」選項,可精確對應 C# 的 DateOnly 與 TimeOnly 型別,避免型別誤用。
版本相依性限制
什麼情況下會遇到這個問題:當同時維護跨越 .NET Core 3.1 到 .NET 8 的多個專案時。
EF Core Power Tools 的版本與 EF Core 及 .NET 版本具有嚴格的相依性,不同專案可能需要對應不同版本的擴充套件:
- EF Core Power Tools 2.5.1429:最後支援 Entity Framework Core 3.1 的版本。
- EF Core Power Tools 2.6.698:最後支援 Entity Framework Core 7 的版本。
若開發環境需同時支援多個版本,建議安裝多個 Visual Studio 實例(如正式版與 Preview 版)以隔離擴充套件環境。
EF Core Power Pack 擴充支援
什麼情況下會遇到這個問題:當專案使用 SQL Server 以外的資料庫(如 PostgreSQL 或 SQLite)進行反向工程時。
由於 EF Core Power Tools 主要針對 SQL Server 設計,作者另外開發了 EF Core Power Pack 來擴充支援。
安裝與使用
安裝後,系統會自動整合 VisualStudio.Data.Sqlite 與 Npgsql PostgreSQL Integration。在 Visual Studio「新增資料庫連線」時,點擊「變更(C)」按鈕,即可在清單中選擇 PostgreSQL 或 SQLite 進行後續操作。
異動歷程
- 初版文件建立。